package com.example.demo.domain.application.repository;

import com.example.demo.domain.application.Application;
import com.example.demo.domain.application.OpenRecord;
import com.example.demo.domain.user.User;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;
import java.util.Optional;

/**
 * 应用对应用户是否开放的持久化
 *
 * @author yingjianhua
 */
public interface UserOpenRepository extends JpaRepository<OpenRecord, Long> {

    /**
     * 查询应用对用户的开通记录
     *
     * @param application 应用
     * @param user        用户
     * @return 开通记录
     */
    Optional<OpenRecord> findByApplicationAndUser(Application application, User user);

    /**
     * 查询应用对公司的开通记录
     *
     * @param application 应用
     * @param companyId   公司id
     * @param scope       开通范围 若为空 表示不限制
     * @return 开通记录
     */
    Optional<OpenRecord> findByApplicationAndCompanyIdAndScope(Application application, String companyId, OpenRecord.Scope scope);

    /**
     * 查询应用的所有开通记录
     *
     * @param application 应用
     * @param companyId   公司id
     * @return 开通记录
     */
    List<OpenRecord> findAllByApplicationAndCompanyId(Application application, String companyId);
}
